package br.org.acessobrasil.portal.persistencia;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import br.org.acessobrasil.portal.modelo.ConteudoFormatado;
import br.org.acessobrasil.portal.modelo.InformacaoTipoConteudo;
import br.org.acessobrasil.portal.modelo.ItemConteudo;
import br.org.acessobrasil.portal.util.MySqlConnection;

//TODO colocar EM
public class ConteudoFormatadoDao {
	public void create(ConteudoFormatado conteudoFormatado,Connection con) throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException{
		PreparedStatement ps = con.prepareStatement("insert into sgctb_conteudo_formatado (nu_item_conteudo,nu_informacao_tipo_conteudo,de_conteudo) values (?,?,?)");
		ps.setLong(1, conteudoFormatado.getNuItemConteudo());
		ps.setLong(2, conteudoFormatado.getNuInformacaoTipoConteudo());
		ps.setString(3, conteudoFormatado.getDeConteudo());
		ps.executeUpdate();		
	}

	public List<ConteudoFormatado> getListConteudoFormatado(ItemConteudo itemConteudo,Connection con) throws SQLException {
		ArrayList<ConteudoFormatado> arrConteudoFormatado = new ArrayList<ConteudoFormatado>();
		PreparedStatement ps = con.prepareStatement("Select * From " +
				"sgctb_conteudo_formatado as cf inner join sgctb_informacao_tipo_conteudo as t " +
				"on cf.nu_informacao_tipo_conteudo=t.nu_informacao_tipo_conteudo " +
				"where cf.nu_item_conteudo=?");
		ps.setLong(1, itemConteudo.getNuItemConteudo());
		ResultSet rs = ps.executeQuery();
		while(rs.next()){
			InformacaoTipoConteudo info = new InformacaoTipoConteudo();
			info.setCoAtivo(rs.getBoolean("co_ativo"));
			info.setNoInformacao(rs.getString("no_informacao"));
			info.setNuFormato(rs.getInt("nu_formato"));
			info.setNuInformacaoTipoConteudo(rs.getLong("nu_informacao_tipo_conteudo"));
			ConteudoFormatado conteudoFormatado = new ConteudoFormatado();
			conteudoFormatado.setDeConteudo(rs.getString("de_conteudo"));
			conteudoFormatado.setNuItemConteudo(rs.getLong("nu_item_conteudo"));
			conteudoFormatado.setNuConteudoFormatado(rs.getLong("nu_conteudo_formatado"));
			conteudoFormatado.setNuInformacaoTipoConteudo(rs.getLong("nu_informacao_tipo_conteudo"));
			conteudoFormatado.setInformacaoTipoConteudo(info);
			arrConteudoFormatado.add(conteudoFormatado);
		}
		rs.close();
		ps.close();
		return arrConteudoFormatado;
	}

	public void update(ConteudoFormatado conteudoFormatado, Connection con) throws SQLException {
		PreparedStatement ps = con.prepareStatement("Update sgctb_conteudo_formatado Set de_conteudo=? where nu_conteudo_formatado=?");		
		ps.setString(1, conteudoFormatado.getDeConteudo());
		ps.setLong(2, conteudoFormatado.getNuConteudoFormatado());
		ps.executeUpdate();
	}
	/**
	 * Delete
	 * @param nu_item_conteudo
	 * @param con
	 * @throws SQLException
	 */
	public void apagar(Long nu_item_conteudo, Connection con) throws SQLException {
		PreparedStatement ps = con.prepareStatement("Delete From sgctb_conteudo_formatado where nu_item_conteudo=?");		
		ps.setLong(1, nu_item_conteudo);
		ps.executeUpdate();
	}

	public List<ConteudoFormatado> procurar(String texto,Integer nu_informacao_tipo_conteudo) {
		Connection con = null;
		ArrayList<ConteudoFormatado> arrConteudoFormatado = new ArrayList<ConteudoFormatado>();
		try{
			con = MySqlConnection.getConnection();
			PreparedStatement ps = con.prepareStatement("Select distinct de_conteudo From " +
					"sgctb_conteudo_formatado where nu_informacao_tipo_conteudo=? and de_conteudo like ? order by de_conteudo limit 0,15");
			ps.setInt(1, nu_informacao_tipo_conteudo);
			ps.setString(2,texto+"%");
			ResultSet rs = ps.executeQuery();
			while(rs.next()){
				ConteudoFormatado conteudoFormatado = new ConteudoFormatado();
				conteudoFormatado.setDeConteudo(rs.getString("de_conteudo"));
				//conteudoFormatado.setNuItemConteudo(rs.getInt("nu_item_conteudo"));
				//conteudoFormatado.setNuConteudoFormatado(rs.getInt("nu_conteudo_formatado"));
				//conteudoFormatado.setNuInformacaoTipoConteudo(rs.getInt("nu_informacao_tipo_conteudo"));
				arrConteudoFormatado.add(conteudoFormatado);
			}
			rs.close();
			ps.close();
		}catch(Exception e){
			
		}finally{
			try {
				con.close();
			} catch (Exception e) {
			}
		}
	
		return arrConteudoFormatado;
	}
}
